<!DOCTYPE html>
<html lang="en">
<head>
    <meta  http-equiv="content-type" content="text/html" charset="utf-8"/>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        /**
         * call apply基本用法
         * 绑定函数，传递参数

        function sum(a,b){
            return a+b;
        }

        function call1(num1,num2){
            return sum.call(this,num1,num2);//将sum绑定到this当前函数，并传递参数
        }

        function apply1(num1,num2){//与call区别是他要接收数组
            return sum.apply(this,[num1,num2]);
        }
        alert(apply1(10,20));*/


        /**
         * 真正强大的地方是能够扩充函数的作用域


        window.color = 'red';
        var obj = {color:'blue'};
        function showColor(){
            alert(this.color);
        }
        showColor.call(this);//red
        showColor.call(window);//red
        showColor.call(obj);//blue*/

        /**
         * call方法的实现
         */
            //当成方法
            function test1(a,b){
                return a+b;
            }

            //当成对象，如果函数第一个字母大写，预定为对象
            function Obj(x,y){
                this.x= x;
                this.y = y;
               return x*y;
            }

            var o = new Obj(10,20);
            o.method = test1;
            o.method(o.x, o.y);
            delete o.method;

    </script>
</head>
<body>

</body>
</html>